package com.design.StateMode.simpleDemo;

/**
 * @Description: 状态模式
 *  Demo:
 *      红灯: 停车
 *      绿灯: 行车
 *      黄灯: 减速
 *  角色:
 *      State: 抽象状态类，定义一个接口以封装与context的一个状态相关的行为
 *      ConcreteState: 具体状态，每一子类实现一个与Context的一个状态相关的行为
 *      Context: 状态上下文，维护一个ConcreteState子类的实例，这个实例定义当前的状态。
 * @Author: LiHaiChao
 * @Date: 2022/1/13 13:50:21
 * @Version: 1.0
 */
public class main {

    public static void main(String[] args) {
        Context context = new Context();
        // 切换为红灯
        RedState redState = new RedState(RedState.RED_LAMP);
        // 车辆准备动作
        context.setState(redState);

        // 切换为绿灯
        GreenState greenState = new GreenState(GreenState.GREEN_LAMP);
        // 车辆准备动作
        context.setState(greenState);

        // 切换为黄灯
        YellowState yellowState = new YellowState(YellowState.YELLOW_LAMP);
        // 车辆准备动作
        context.setState(yellowState);
    }
}
